#!/bin/bash
# Script base para automatizar scripts
# Programado por Carlos Giurleo cgiurleo@gmail.com

soy="`basename $0 .sh`"
estoy="`dirname $0`/"

version="0.5.6"

paramark=`echo -n ${estoy}${soy}${@} | sed "s/\//_/g" | sed "s/ /_/g"`

filacfg="${estoy}${soy}.cfg"
filamark="/tmp/${paramark}.mark"
filanonono="/tmp/${paramark}.nonono"
filapause="/tmp/${paramark}.pause"
filainc="${estoy}${soy}.inc"
filaini="${estoy}${soy}.ini"
filainicommon="${estoy}common.ini"
filacfgcommon="${estoy}common.cfg"

logtext="Iniciando LOG"

function log() {
	if [ "${logtext}" != "" ]; then
		echo "`date +%H:%M_%d/%m/%Y` ${paramark}: ${logtext}" >> "/tmp/`date +%Y%m%d`.log"
	fi
}


if [ ${soy} = "basesh" ]; then
	if [ "${1}" = "" ]; then
		echo BASESH - Script que genera scripts basicos - V: ${version}
		echo Ejecute: bashrc.sh nombre_mi_script
		echo NO UTILIZAR ESPACIOS NI SIGNOS
		echo Si el nombre comienza con un punto no entrara en loop
		exit
	else
		if [ -e $1 ]; then
			echo El archivo ${1} ya existe. Edite la configuracion o seleccione un nuevo archivo.
			exit
		else
			nuevonombre=`basename ${1} .sh`
			ln -s ${estoy}basesh.sh ${estoy}${nuevonombre}.sh
			echo Link ${estoy}${nuevonombre}.sh creado. Ejecutelo para que se creen los archivos de configuracion.
			exit
		fi
	fi
fi

if [ "${soy:0:1}" != "." ]; then
	sleep 5
fi

touch ${filainicommon}
touch ${filacfgcommon}

if [ -e ${filacfg} ]; then
	. ${filacfg}
else
	echo -e "#Configuracion de este script. Este archivo se leera en cada paso del loop.\n\n\n" > ${filacfg}
	touch ${filacfg}
fi

if [ -e ${filamark} ]; then
	exit
fi

if [ -e ${filaini} ]; then
	. ${filaini}
else
	echo -e "#Variables que se cargaran al inicio del script pero no durante la ejecucion.\n\n\n" > ${filaini}
	touch ${filacfg}
fi

if [ -e ${filanonono} ]; then
	exit
fi

if ! [ -e ${filainc} ]; then
	echo -e "\n#Subrutina central\n\n#Elimine este sleep si no lo considera necesario\nsleep 5\n\n" > ${filainc}
	echo Coonfigure ahora la subrutina principal: ${filainc} y configure parametros en ${filacfg}
	exit
fi

. ${filainicommon}
. ${filaini}

if [ "${soy:0:1}" != "." ]; then
	touch ${filamark}

	log

	while [ -e ${filamark} ]; do

		. ${filacfgcommon}
		. ${filacfg}
		. ${filainc}

		while [ -e ${filapause} ]; do
			sleep 2
		done

	done

else

	. ${filacfgcommon}
	. ${filacfg}
	. ${filainc}

fi


